package algorithm;

import it.unisa.dia.gas.jpbc.Element;
import it.unisa.dia.gas.jpbc.Field;
import it.unisa.dia.gas.jpbc.Pairing;

import java.math.BigInteger;
import java.util.Base64;

/**
 * CPABE的主密钥类
 */
public class CPABEMK {
    //私钥组件
    private Element alpha;
    //私钥组件
    private Element beta;

    public CPABEMK(Element alpha, Element beta) {
        this.alpha = alpha;
        this.beta = beta;
    }

    public CPABEMK(){}

    public Element getAlpha() {
        return alpha;
    }

    public Element getBeta() {
        return beta;
    }

    /**
     * 序列化，将类编程字符数组输出，简易存储的时候，每个数组占用一行。
     * @return 序列化后的数组
     */
    public String[] toStringArray(){
        String[] array=new String[2];
        //第一位为alpha
        array[0]= Base64.getEncoder().encodeToString(alpha.toBytes());
        //第二行为beta
        array[1]=Base64.getEncoder().encodeToString(beta.toBytes());
        return array;
    }
    /**
     * 反序列化，从字符串读取数据
     * @param data
     */
    public  void fromStringArray(String[] data, Pairing pairing){
        alpha=pairing.getG1().newElement();
        alpha.setFromBytes(Base64.getDecoder().decode(data[0]));
        alpha=alpha.getImmutable();
        beta=pairing.getZr().newElement();
        beta.setFromBytes(Base64.getDecoder().decode(data[1]));
        beta=beta.getImmutable();
    }
}
